iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 16
0

前言

大家中秋節愉快,祝大家在這樣美好的日子中,能與珍愛的人共度良宵。那麼廢話不多說,接著就開始我們的介紹啦!昨日對於 Xml 語法還有應用的介紹,希望大家都有收穫,今天我們就準備來講運用 Xml 來書寫的檔案 launch ,它的功用都會在下兩天跟各位慢慢說明,那我們就往下看吧!!!!

What Is Launch ?

甚麼叫做 launch 檔?顧名思義,像發射這個詞一樣,它可以將很多的檔案和資訊,藉由它一次性的啟動出來。那 launch 檔又要怎麼使用,如何撰寫 ?需要知道些甚麼呢 ?

launch 對於需要執行許多複雜程式時,非常好用。可以把多個指令全部都寫進 launch 中,在執行 launch 時便可以一次執行大量的指令,非常方便。只要在 Ubuntu 終端機裡,輸入指令 roslaunch yourfilename.launch 它就能執行 launch 檔內所設定的內容!同時也可以藉由在 launch 裡更改預設變數(明天將會提到),來變化你所打開的初始資料。

那通常我們的 launch 檔,都放在哪呢 ?
https://ithelp.ithome.com.tw/upload/images/20201001/201293843BGtnOHMxt.png

如果有好好的觀察 Package 的結構就會發現到,正常來說都放在已經建立好的 rospackage 中,當然你在 Package 中也可以創建新的資料夾方便管理,下面我們就看看創建的方式吧!

要建立 launch 可以使用以下指令

roscd robotcontrol_pkg
mkdir launch
cd launch
gedit robotcontrol test.launch

但記得先創建一個 package ! 忘記的人可以看到前幾天的文章這裡

完成後,你將會得到一個位於 [yourname _ pkg] 的 Package 內,名為 launch 的資料夾,以及其裡面的 test.launch 檔:

https://ithelp.ithome.com.tw/upload/images/20201001/201293843BGtnOHMxt.png

輸入 tree 指令可看到當前的資料夾結構,指令一樣在前面已提過。那為甚麼 launch 要放在 rospackage 裡呢 ? 如果沒放在裡面難道就無法執行了嗎 ?

原因是 launch 為了開啟選取的 Node 及 data 資料還有附加軟體或是其他執行檔(rviz 、 gazebo 、 C++ 、 Python..),所以想當然爾 Package 是不行的,因為他不會跨越資料夾去獲取其他 Package 的 Node。可以想像成種子,由內而外從 Package 裡帶出你的資料,所以 launch 要打開的資訊,需要包含於所在的 Package 中。這時就會有一個問題,那我豈不是也要開很多個 launch 才可以開啟全部我要的功能?別擔心,在明天的內容中,我們將告訴各位如何匯整多個 launch 還有其他常用的檔案匯入。

結語

launch 在 ROS 系統裡的運用可說是極其重要,不論是機器人、自走車、sensor,都是一個個的模塊所組成,而這些模塊的功能,通常又以各自的 launch 來做開啟,所以整理一個我們自己客製化的 launch 成為了必然。明天我們將對於一個 launch 的內容、匯整,以及其他一些常用的程式碼來做介紹,請大家敬請期待!!
https://ithelp.ithome.com.tw/upload/images/20201001/20129807eouELXb5O0.jpg


上一篇
[DAY 15] Xml的介紹與運用
下一篇
[DAY 17] ROS Launch 的介紹與應用2
系列文
ROS系統控制自走車搭配點雲雷達(隧道檢測裝置)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言